home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
systems
/
minix
/
tcsh6033.zoo
/
tcsh-603.pl3
/
ARGV.TXT
next >
Wrap
Text File
|
1993-06-06
|
3KB
|
57 lines
This is a proposal for an extension of Atari's ARGV argument passing scheme
standard. It has been discussed on the MiNT mailing list. Please note
that this proposal should not yet be regarded as an "official" Atari
standard; however, according to Atari's Eric Smith, it's unlikely that
Atari's new standard will differ a lot from the one proposed here.
*
This ARGV standard extension adds the possibility of passing blank (i.e.,
zero length) arguments via the command line when calling another program.
The ARGV extended argument passing scheme standard should be extented by
the following clauses:
If the command line does _not_ contain blank arguments, the old ARGV
standard applies; there are no additions. This is for maximal
backwards compatibility with old (unaware) applications.
_If_ (and only if) there are blank arguments, they're substituted by
single spaces in the argv[] representation in the environment and
by the string "''" (two single quotes) in the basepage's command
line representation. Their position in argv[] is signaled thru the
value of the "ARGV=" environment variable (which was reserved by
Atari's earlier standard for future usage). This value consists of
the string "NULL:", followed by a comma-separated list of decimal-
encoded indexes to the positions of the blank arguments in the
argv[] vector.
Example: The following command:
foo bar '' '' blah '' frob
results in the following being appended to the child's environment:
"ARGV=NULL:2,3,5\0foo\0bar\0 \0 \0blah\0 \0frob\0\0"
The basepage contains the following string at offset 0x80:
"\177bar '' '' blah '' frob\0"
A program which is aware of the new standard will notice the magic word
"NULL" in ARGV's value and will decode the argv[] indexes it signals.
A program which is not aware of the new standard, but which is aware
of Atari's old ARGV standard will see spaces in place of blank
arguments. The spaces have been introduced to guarantee that
the parameters stay on their positions.
Non-ARGV-aware programs (those which read their command line from their
basepage) should see the parameters in the right place too.. Of course,
a space can't be inserted in place of an blank argument because spaces
separate words in the basepage's command line, which is why the single
quotes have been introduced.
Those programs that use the value of ARGV= for other purposes (Mark
Williams C compiled programs) will conform/work as long as they're not
passed blank args. If someone tries to pass blank args to them from an
aware shell, these programs will lose. However, these programs would
also lose in this case if the (new) standard wouldn't exist (because
blank arguments are impossible resp. truncate the ARGV parameters in the
environment), so this is not really a problem.